﻿using Jay.Sc2.Bof.Lib.State;

namespace Jay.Sc2.Bof.Lib.Action.Terran
{
	public abstract class ActionUpgradeFromFusionCore : ActionUpgradeFromTerran
	{
		public ActionUpgradeFromFusionCore(int researchTime, int minerals, int gas) : base(researchTime, minerals, gas) { }
		public override TerranState.TerranProductionBuilding GetProductionBuilding(TerranState state) { return state.FusionCore; }
		public override IAction[,] Requirements
		{
			get
			{
				if (m_Requirements == null)
					m_Requirements = new IAction[,] { { ActionProduceFusionCore.Instance } };
				return m_Requirements;
			}
		}
	}
	public class ActionUpgradeBehemothReactor : ActionUpgradeFromFusionCore
	{
		public static ActionUpgradeBehemothReactor Instance = new ActionUpgradeBehemothReactor();
		public ActionUpgradeBehemothReactor() : base(80, 150, 150) { }
		public override TerranState.TerranUpgrade GetUpgrade(TerranState state) { return state.BehemothReactor; }
		public override string EventName { get { return "ActionResearchedBehemothReactor"; } }
	}
	public class ActionUpgradeWeaponRefit : ActionUpgradeFromFusionCore
	{
		public static ActionUpgradeWeaponRefit Instance = new ActionUpgradeWeaponRefit();
		public ActionUpgradeWeaponRefit() : base(80, 150, 150) { }
		public override TerranState.TerranUpgrade GetUpgrade(TerranState state) { return state.WeaponRefit; }
		public override string EventName { get { return "ActionResearchedWeaponRefit"; } }
	}
}
